import os
import subprocess
import sys

# 自动安装所需依赖库
def install_requirements():
    required_packages = ['pandas', 'openpyxl']
    for package in required_packages:
        try:
            __import__(package)
        except ImportError:
            print(f"正在安装 {package}...")
            subprocess.check_call([sys.executable, '-m', 'pip', 'install', package])

# 执行安装
install_requirements()

# 安装完成后导入所需库
import pandas as pd
from datetime import datetime, timedelta

# 获取当前代码文件所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 定义目标文件夹路径（当前代码目录下的“销售数据”）
sales_dir = os.path.join(current_dir, '销售数据')
# 创建文件夹
if not os.path.exists(sales_dir):
    os.makedirs(sales_dir)

# 生成示例数据的函数
def generate_sales_data(quarter, n_rows=50):
    regions = ['华东', '华北', '华南', '西南', '西北', '东北']
    salesmen = ['张三', '李四', '王五', '赵六', '孙七', '周八']
    data = []
    start_date = datetime(2023, 3*(quarter-1)+1, 1)  # Q1:1月, Q2:4月, Q3:7月
    
    for i in range(n_rows):
        region = regions[i % len(regions)]
        salesman = salesmen[i % len(salesmen)]
        sales = 10000 + i * 200 + (i % 5) * 500  # 基础销售额
        # 随机添加异常值（10%概率为空值，5%概率为负数）
        if i % 10 == 0:
            sales = None  # 空值
        elif i % 20 == 0:
            sales = -sales  # 负数
        quantity = sales // 500 if sales and sales > 0 else (i % 10 + 1)
        date = start_date + timedelta(days=i)
        data.append([region, salesman, sales, quantity, date.strftime('%Y-%m-%d')])
    
    df = pd.DataFrame(data, columns=['区域', '销售人员', '销售额（元）', '销售数量', '日期'])
    df.to_excel(os.path.join(sales_dir,f'sales_2023Q{quarter}.xlsx'), index=False)

# 生成3个季度的数据（每个文件50行，含异常值）
for q in [1, 2, 3]:
    generate_sales_data(q)

print("数据生成完成！已在 '销售数据' 文件夹中创建 3 个Excel文件。")